package control;

import java.rmi.RemoteException;
import java.sql.SQLException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.xml.rpc.ServiceException;

import model.Projeto;
import model.UsuarioCT;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import ws.svn.client.SVNFactory;
import dao.ProjetoDAO;
import dao.UsuarioProjetoDAO;

public class CadastroAction extends Action {
	
	public ActionForward execute(ActionMapping map, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		CadastroForm formulario = (CadastroForm)form;
		Projeto projeto = formulario.getProjeto();
		
		HttpSession session = request.getSession();
		UsuarioCT usuario = (UsuarioCT)session.getAttribute("usuario");
		
		//projeto.inserirUsuario(usuario);
		//usuario.inserirProjeto(projeto);
		//atualizar sessao com o novo projeto cadastrado
		//session.setAttribute("usuario", usuario);

		//atualizando a tabela "projeto" e "usuarioProjeto"
		boolean cadastrouProjeto = true;
		try {
			Facade facade = Facade.getInstance();
			facade.cadastraProjeto(usuario,projeto);
		} catch (SQLException e) {
			cadastrouProjeto = false;
		}

		String action = "";
		if (cadastrouProjeto) {

			String path = "C:/eclipse/Floapp/repositorio" + projeto.getNomeUnix();
			try {
				SVNFactory.criarRepositorio(path);
			} catch (RemoteException e) {
				e.printStackTrace();
			} catch (ServiceException e) {
				e.printStackTrace();
			}
			action = "projetoCadastrado";
		} else {
			action = "projetoNaoCadastrado";
		}
		
		return map.findForward(action);
	}
}